<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>字符串的方法</title>
</head>
<body>

</body>
</html>
<script>
    /*

    */

    // 创建一个字符串
    var str = "Hello Ziyan";
    /*
        在底层字符串是以字符数组的形式保存的
        [h,e,l,l,o]
    */
    console.log(str[1]);

    /*
        length属性  ⭐
            - 可以用来获取字符串的长度
    */
    console.log(str.length);

    /*
        charAt()    ⭐
            - 可以返回字符串中指定位置的字符
            - 根据索引获取指定的字符
    */
    console.log(str.charAt(4));
    console.log(str[4]);        // 效果一样

    /*
        charCodeAt() ⭐
            - 获取指定位置字符的字符编码（Unicode编码）
    */
    console.log(str.charCodeAt(1));

    /*
        formCharCode()  ⭐
            - 可以根据字符编码去获取字符
    */
    document.write(String.fromCharCode(0x8295));

    /*
        concat()    ⭐
            - 可以用来连接两个或多个字符串
            - 效果和 + 一样
    */
    var str2 = "Yin Zhouyu"
    console.log(str.concat(str2));
    console.log(str+str2);          // 效果一样

    /*
        indexOf()   ⭐
            - 该方法可以检索一个字符串中是否含有指定的内容
            - 如果字符串中含有该内容，则会返回其第一次出现的索引
                如果没有找到指定内容，则返回 -1
            - 可以指定一个第二个参数，指定开始查找的位置
        lastIndexOf()
            - 
    */
    str = "Hello Ziyan";
    console.log(str.indexOf("o",1));
    console.log(str.lastIndexOf("l",6));

    /*
        slice() ⭐
            - 可以从字符串中截取指定的内容
            - 不会影响源字符串，而是将截取到内容返回
            - 参数：
                第一个，开始位置的索引（包括开始位置）
                第二个，结束位置的索引（不包括开始位置）
                        - 如果省略第二个参数，则会截取到后边所有的
                - 也可以传递一个负数作为参数，负数的话将会从后边计算
    */
    str2 = "123456789";
    console.log(str2.slice(2,8));   // 索引2-8 的内容，（不包括8）
    console.log(str2.slice(2,-4));

    /*
        substring() ⭐
            - 可以用来截取一个字符串，和slice()类似
            - 参数：
                第一个：开始截取位置的索引（包括开始位置）
                第二个：结束位置的索引（不包括结束位置）
            - 不同的是：这个方法不能接受负值作为参数，
                如果传递了一个负值，则默认使用 0
            - 而且他还自动调整参数的位置，如果第二个参数小于第一个，则自动交换
    */

    console.log(str2.substring(2,8));
    console.log(str2.substring(2,-4));

    /*
        substr()  ⭐
            - 用来截取字符串
            - 参数：
                1.截取开始位置的索引
                2.截取的长度
    */
    console.log(str.substr(3,6));

    /*
        split() ⭐
            - 可以将一个字符串拆分为一个数组
            - 参数：
                - 需要一个字符串作为参数，将会根据该字符串去拆分数组
    */
    str3 = "abc,bcd,efg,hig";
    console.log(str3);
    console.log(str3.split(","));
    console.log(str3.split(",").length);

    /*
        toUpperCase() ⭐
            - 将一个字符串转换为大写并返回
    */
    str = "abcdefg";
    console.log(str.toUpperCase());

    /*
        toLowerCase() ⭐
            -将一个字符串转换为小写并返回
    */
    str = "ABCDEFG";
    console.log(str.toLowerCase());
</script>